package handler

import (
	"context"
	"net/http"
	"gorm.io/gorm"
)

// Handler 处理API请求的结构体
type Handler struct {
	DB *gorm.DB
}

// NewHandler 创建一个新的Handler实例
func NewHandler(db *gorm.DB) *Handler {
	return &Handler{DB: db}
}

// pathParamKey 用于在请求上下文中存储路径参数的键
type pathParamKey string

// SetPathParam 设置路径参数到请求上下文中
func SetPathParam(r *http.Request, key, value string) *http.Request {
	ctx := r.Context()
	params, _ := ctx.Value(pathParamKey("params")).(map[string]string)
	if params == nil {
		params = make(map[string]string)
	}
	params[key] = value
	return r.WithContext(context.WithValue(ctx, pathParamKey("params"), params))
}

// GetPathParam 从请求上下文中获取路径参数
func GetPathParam(r *http.Request, key string) string {
	ctx := r.Context()
	params, _ := ctx.Value(pathParamKey("params")).(map[string]string)
	if params == nil {
		return ""
	}
	return params[key]
}
